home *** CD-ROM | disk | FTP | other *** search
/ Everything For A Hacker / 19990506-[HACK].iso / SECURE / CRYPT / GOST.ZIP / IMITO~.ASM < prev    next >
Assembly Source File  |  1998-03-07  |  4KB  |  120 lines

  1. ;------------------------------------------------------
  2. ; éδαáí«Γ¬á ¿¼¿óßΓá󬿠ñ½∩ ¼áßß¿óá ñá¡¡δσ ß«ú½áß¡«
  3. ; ¬α¿»Γ«á½ú«α¿Γ¼π âÄæÆ 28147-89.
  4. ; --------> ñ½∩ 32-í¿Γ«óδσ »α«µÑßß«α«ó 80x86 <---------
  5. ; Éáºαáí«Γá½ é¿¡«¬πα«ó Ç.₧., ú.î«ß¬óá, 1992-1995 ú.
  6. ; (C)1992-1995, æó«í«ñ¡«Ñ ¬«»¿α«óá¡¿Ñ ¿ ¿ß»«½∞º«óá¡¿Ñ.
  7. ;------------------------------------------------------
  8. ; Åáαá¼ÑΓαδ  »α¿  ó맮óÑ  »ÑαÑñáεΓß∩  ó  ßΓφ¬Ñ :
  9. ; æ¼ÑΘÑ¡¿Ñ ÉẼÑα    Å  Ç  É  Ç  î  à  Æ  É
  10. ;NEAR FAR
  11. ;  2   4      4     FAR-áñαÑß ¬½ετá (è)
  12. ;  6   8      4     FAR-áñαÑß ¿ßσ«ñ¡«⌐ ¬«¼í¿¡áµ¿¿ (êè)
  13. ; 10  12      4     FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡ (Æç)
  14. ; 14  16      4     FAR-áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ (ì)
  15. ; 18  20      2     τ¿ß½« 8-íá⌐Γ«óδσ í½«¬«ó
  16. ;*20  22      2     ñ½¿¡á ¬½ετá ó ñó«⌐¡δσ ß½«óáσ
  17. ;                   (ß¼. óáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩)
  18. ;------------------------------------------------------
  19. ; ç¡áτÑ¡¿∩ »áαá¼ÑΓα«ó »α¿ óδσ«ñÑ:
  20. ; - áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ π¬áºδóδÑΓ  ¡á »Ñαóδ⌐ íá⌐Γ
  21. ;   »«ß½Ñ »«ß½Ññ¡Ñú« «íαáí«Γá¡¡«ú« í½«¬á;
  22. ; - áñαÑßá ¬½ετá, Γáí½¿µδ ºá¼Ñ¡ ¿ ¬«¡Γα«½∞¡«⌐ ¬«¼í¿¡á-
  23. ;   µ¿¿ ¡Ñ ¿º¼Ñ¡¿½¿ß∞;
  24. ; - «í½áßΓ∞ ¬«¡Γα«½∞¡«⌐ ¬«¼í¿¡áµ¿¿ ß«ñÑαª¿Γ º¡áτÑ¡¿Ñ,
  25. ;   ß ¬«Γ«αδ¼ ¡áñ« óδºóáΓ∞ Σπ¡¬µ¿ε ñ½∩ »α«ñ«½ªÑ¡¿∩;
  26. ; - ßτÑΓτ¿¬ í½«¬«ó αáóÑ¡ 0;
  27. ; - αÑú¿ßΓα  EAX  ß«ñÑαª¿Γ ¼½áñΦÑÑ ñó«⌐¡«Ñ ß½«ó«  ¬«¡-
  28. ;   Γα«½∞¡«⌐ ¬«¼í¿¡áµ¿¿,  ¿ß»«½∞ºπѼ«Ñ «íδτ¡« ¬á¬ ¿¼¿-
  29. ;   Γ«óßΓáó¬á,τΓ« ß««ΓóÑΓßΓóπÑΓ ó«ºóαáΓπ º¡áτÑ¡¿∩ Γ¿»á
  30. ;   Item,    «»αÑñѽѡ¡«ú«    ó    Σá⌐½Ñ   gost.h  ¬á¬
  31. ;   unsigned long.
  32. ;------------------------------------------------------
  33. ; êß»«½∞ºπѼδÑ αÑú¿ßΓαδ : óßÑ
  34. ;------------------------------------------------------
  35. ; éáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩
  36. ; - æ¿¼ó«½ KeySize:
  37. ; -- æ¿¼ó«½ ¡Ñ«»αÑñѽѡ:Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ αáºóÑα¡πΓδ⌐
  38. ;    ¬½ετ αẼÑα«¼ ó 16 ¬½ετÑóδσ φ½Ñ¼Ñ¡Γ«ó;
  39. ; -- æ¿¼ó«½ «»αÑñѽѡ ¿ ¿¼ÑÑΓ τ¿ß½«ó«Ñ º¡áτÑ¡¿Ñ:
  40. ;    Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ ¬½ετ π¬áºá¡¡«ú« αẼÑαá (ó
  41. ;    ¬½ετÑóδσ φ½Ñ¼Ñ¡Γáσ);
  42. ; -- æ¿¼ó«½ «»αÑñѽѡ, ¿¼ÑÑΓ »πßΓ«Ñ º¡áτÑ¡¿Ñ:
  43. ;    αẼÑα ¬½ετá »ÑαÑñáÑΓß∩ ¬á¬ »«ß½Ññ¡¿⌐ »áαá¼ÑΓα
  44. ;    Σπ¡¬µ¿¿.
  45. ;------------------------------------------------------
  46. ;
  47. wptr    EQU     <word ptr>
  48. IFNDEF KeySize
  49. _keysize EQU    16      ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
  50. ELSE
  51. IFDIF KeySize,<>
  52. _keysize EQU    KeySize ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
  53. ENDIF
  54. ENDIF
  55. ;
  56.         .model  small,C
  57.         .code    $gost
  58.     .386
  59.         extrn   gost386:near
  60. imito   proc
  61.         public  imito
  62. ; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
  63.         a=10                    ; 2+1+1+1 ß½«ó ó ßΓφ¬Ñ
  64. IF      (TYPE imito) EQ 0FFFEh
  65.         a=a+2                   ; Ñß½¿ gamma - far-»α«µÑñπαá
  66. ENDIF
  67. ; çáñáѼ  ß¼ÑΘÑ¡¿Ñ  áαúπ¼Ñ¡Γ«ó  ó  ßΓφ¬Ñ
  68. ;
  69. key=    2+a
  70. syn=    6+a
  71. chg=    10+a
  72. tar=    14+a
  73. len=    18+a
  74. IFNDEF _keysize
  75. keylen= 20+a
  76. ENDIF
  77. ;
  78. ; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó »« ß«ú½áΦÑ¡¿∩¼ Turbo C
  79.         push    EBP
  80.         push    DS
  81.         push    SI
  82.         push    DI
  83. ; çáúαπº¬á ¡áτá½∞¡«ú« º¡áτÑ¡¿∩ ¬«¡Γα«½∞¡«⌐ ¬«¼í¿¡áµ¿¿
  84.         lds     SI,syn[ESP]     ; DS:SI <- áñαÑß êè (S2,S1)
  85.         mov     EAX,[SI]        ; EAX <- S1
  86.         mov     EDX,4[SI]       ; EDX <- S2
  87. ; ìáτá½∞¡á∩ ºáúαπº¬á π¬áºáΓѽÑ⌐
  88.         mov     ES,key+2[ESP]   ; ES <- ßÑú¼Ñ¡Γ ¬½ετá
  89.         lds     BX,chg[ESP]     ; DS:BX <- áñαÑß Æç
  90.         lfs     DI,tar[ESP]     ; FS:DI <- áñαÑß ñá¡¡δσ
  91. ; ä«íáó½∩Ѽ í½«¬ ñá¡¡δσ
  92. circle: xor     EAX,FS:[DI]     ; âá¼¼¿απѼ
  93.         xor     EDX,FS:4[DI]    ;    8-íá⌐Γ¡δ⌐
  94. ; é맮ó »α«ßΓ«⌐ ºá¼Ñ¡δ;
  95. IFDEF _keysize
  96.         mov     CX,_keysize     ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  97. ELSE
  98.         mov     CX,keylen[ESP]  ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  99. ENDIF
  100.         mov     SI,key[ESP]     ; ES:SI <- áñαÑß ¬½ετá
  101.         call    gost386         ; <Φáú »α«ßΓ«⌐ ºá¼Ñ¡δ>
  102. ; Äαúá¡¿ºáµ¿∩ µ¿¬½á
  103.         add     DI,8            ;¬«ααѬµ¿∩ áñαÑßᠡạ.
  104.         dec     wptr len[ESP]   ;¬«ααѬµ¿∩ ßτÑΓτ¿¬á í.
  105.         jnz     circle          ; µ¿¬½¿¼ß∩
  106. ; æ«σαá¡Ñ¡¿Ñ ¬«¡Γα«½∞¡«⌐ ¬«¼í¿¡áµ¿¿ ñ½∩ ß½Ññ. ó맮óá
  107. ; (φΓ« ¡πª¡« ñ½∩ «íαáí«Γ¬¿ ¼áßß¿óá ñá¡¡δσ τáßΓ∩¼¿, ó
  108. ; »α«Γ¿ó¡«¼ ß½πτáÑ ¼«ª¡« πñ὿Γ∞ φΓπ ßѬµ¿ε)
  109.         lds     SI,syn[ESP]     ; DS:SI -> ß¿¡σα«»«ß佬á
  110.         mov     [SI],EAX        ; ºá¡«ß¿¼ ¡«óδÑ º¡áτÑ¡¿∩
  111.         mov     4[SI],EDX       ;   S1,S2 ¡á ¿σ ¼ÑßΓ« !!!
  112. ; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó ¿º ßΓφ¬á
  113.     pop     DI
  114.     pop     SI
  115.     pop     DS
  116.     pop     EBP
  117.         ret
  118. imito   endp
  119.     end
  120.